1 /* 2 D bindings for CUDA. 3 Authors: Prasun Anand 4 Copyright: Copyright (c) 2017, Prasun Anand. All rights reserved. 5 License: BSD 3-Clause License 6 */ 7 8 module cuda_d.cublas_api; 9 10 import cuda_d.cuComplex; 11 12 extern (C): 13 14 alias void* cudaStream_t; 15 16 17 struct half { 18 ushort x; 19 } 20 21 struct half2 { 22 uint x; 23 } 24 25 enum cublasStatus_t 26 { 27 CUBLAS_STATUS_SUCCESS = 0, 28 CUBLAS_STATUS_NOT_INITIALIZED = 1, 29 CUBLAS_STATUS_ALLOC_FAILED = 3, 30 CUBLAS_STATUS_INVALID_VALUE = 7, 31 CUBLAS_STATUS_ARCH_MISMATCH = 8, 32 CUBLAS_STATUS_MAPPING_ERROR = 11, 33 CUBLAS_STATUS_EXECUTION_FAILED = 13, 34 CUBLAS_STATUS_INTERNAL_ERROR = 14, 35 CUBLAS_STATUS_NOT_SUPPORTED = 15, 36 CUBLAS_STATUS_LICENSE_ERROR = 16 37 } 38 39 enum cublasFillMode_t 40 { 41 CUBLAS_FILL_MODE_LOWER = 0, 42 CUBLAS_FILL_MODE_UPPER = 1 43 } 44 45 enum cublasDiagType_t 46 { 47 CUBLAS_DIAG_NON_UNIT = 0, 48 CUBLAS_DIAG_UNIT = 1 49 } 50 51 enum cublasSideMode_t 52 { 53 CUBLAS_SIDE_LEFT = 0, 54 CUBLAS_SIDE_RIGHT = 1 55 } 56 57 enum cublasOperation_t 58 { 59 CUBLAS_OP_N = 0, 60 CUBLAS_OP_T = 1, 61 CUBLAS_OP_C = 2 62 } 63 64 enum cublasPointerMode_t 65 { 66 CUBLAS_POINTER_MODE_HOST = 0, 67 CUBLAS_POINTER_MODE_DEVICE = 1 68 } 69 70 enum cublasAtomicsMode_t 71 { 72 CUBLAS_ATOMICS_NOT_ALLOWED = 0, 73 CUBLAS_ATOMICS_ALLOWED = 1 74 } 75 76 /* Used by cublasSgemmEx */ 77 enum cublasDataType_t 78 { 79 CUBLAS_DATA_FLOAT = 0, 80 CUBLAS_DATA_DOUBLE = 1, 81 CUBLAS_DATA_HALF = 2, 82 CUBLAS_DATA_INT8 = 3 83 } 84 85 /* Opaque structure holding CUBLAS library context */ 86 struct cublasContext; 87 alias cublasHandle_t = cublasContext*; 88 89 cublasStatus_t cublasCreate_v2 (cublasHandle_t* handle); 90 cublasStatus_t cublasDestroy_v2 (cublasHandle_t handle); 91 cublasStatus_t cublasGetVersion_v2 (cublasHandle_t handle, int* version_); 92 cublasStatus_t cublasSetStream_v2 (cublasHandle_t handle, cudaStream_t streamId); 93 cublasStatus_t cublasGetStream_v2 (cublasHandle_t handle, cudaStream_t* streamId); 94 95 cublasStatus_t cublasGetPointerMode_v2 (cublasHandle_t handle, cublasPointerMode_t* mode); 96 cublasStatus_t cublasSetPointerMode_v2 (cublasHandle_t handle, cublasPointerMode_t mode); 97 98 cublasStatus_t cublasGetAtomicsMode (cublasHandle_t handle, cublasAtomicsMode_t* mode); 99 cublasStatus_t cublasSetAtomicsMode (cublasHandle_t handle, cublasAtomicsMode_t mode); 100 101 102 cublasStatus_t cublasSetVector ( 103 int n, 104 int elemSize, 105 const(void)* x, 106 int incx, 107 void* devicePtr, 108 int incy); 109 110 cublasStatus_t cublasGetVector ( 111 int n, 112 int elemSize, 113 const(void)* x, 114 int incx, 115 void* y, 116 int incy); 117 118 cublasStatus_t cublasSetMatrix ( 119 int rows, 120 int cols, 121 int elemSize, 122 const(void)* A, 123 int lda, 124 void* B, 125 int ldb); 126 127 cublasStatus_t cublasGetMatrix ( 128 int rows, 129 int cols, 130 int elemSize, 131 const(void)* A, 132 int lda, 133 void* B, 134 int ldb); 135 136 cublasStatus_t cublasSetVectorAsync ( 137 int n, 138 int elemSize, 139 const(void)* hostPtr, 140 int incx, 141 void* devicePtr, 142 int incy, 143 cudaStream_t stream); 144 145 cublasStatus_t cublasGetVectorAsync ( 146 int n, 147 int elemSize, 148 const(void)* devicePtr, 149 int incx, 150 void* hostPtr, 151 int incy, 152 cudaStream_t stream); 153 154 155 cublasStatus_t cublasSetMatrixAsync ( 156 int rows, 157 int cols, 158 int elemSize, 159 const(void)* A, 160 int lda, 161 void* B, 162 int ldb, 163 cudaStream_t stream); 164 165 cublasStatus_t cublasGetMatrixAsync ( 166 int rows, 167 int cols, 168 int elemSize, 169 const(void)* A, 170 int lda, 171 void* B, 172 int ldb, 173 cudaStream_t stream); 174 175 void cublasXerbla (const(char)* srName, int info); 176 /* ---------------- CUBLAS BLAS1 functions ---------------- */ 177 cublasStatus_t cublasSnrm2_v2 ( 178 cublasHandle_t handle, 179 int n, 180 const(float)* x, 181 int incx, 182 float* result); /* host or device pointer */ 183 184 cublasStatus_t cublasDnrm2_v2 ( 185 cublasHandle_t handle, 186 int n, 187 const(double)* x, 188 int incx, 189 double* result); /* host or device pointer */ 190 191 cublasStatus_t cublasScnrm2_v2 ( 192 cublasHandle_t handle, 193 int n, 194 const(cuComplex)* x, 195 int incx, 196 float* result); /* host or device pointer */ 197 198 cublasStatus_t cublasDznrm2_v2 ( 199 cublasHandle_t handle, 200 int n, 201 const(cuDoubleComplex)* x, 202 int incx, 203 double* result); /* host or device pointer */ 204 205 cublasStatus_t cublasSdot_v2 ( 206 cublasHandle_t handle, 207 int n, 208 const(float)* x, 209 int incx, 210 const(float)* y, 211 int incy, 212 float* result); /* host or device pointer */ 213 214 cublasStatus_t cublasDdot_v2 ( 215 cublasHandle_t handle, 216 int n, 217 const(double)* x, 218 int incx, 219 const(double)* y, 220 int incy, 221 double* result); /* host or device pointer */ 222 223 cublasStatus_t cublasCdotu_v2 ( 224 cublasHandle_t handle, 225 int n, 226 const(cuComplex)* x, 227 int incx, 228 const(cuComplex)* y, 229 int incy, 230 cuComplex* result); /* host or device pointer */ 231 232 cublasStatus_t cublasCdotc_v2 ( 233 cublasHandle_t handle, 234 int n, 235 const(cuComplex)* x, 236 int incx, 237 const(cuComplex)* y, 238 int incy, 239 cuComplex* result); /* host or device pointer */ 240 241 cublasStatus_t cublasZdotu_v2 ( 242 cublasHandle_t handle, 243 int n, 244 const(cuDoubleComplex)* x, 245 int incx, 246 const(cuDoubleComplex)* y, 247 int incy, 248 cuDoubleComplex* result); /* host or device pointer */ 249 250 cublasStatus_t cublasZdotc_v2 ( 251 cublasHandle_t handle, 252 int n, 253 const(cuDoubleComplex)* x, 254 int incx, 255 const(cuDoubleComplex)* y, 256 int incy, 257 cuDoubleComplex* result); /* host or device pointer */ 258 259 /* host or device pointer */ 260 cublasStatus_t cublasSscal_v2 ( 261 cublasHandle_t handle, 262 int n, 263 const(float)* alpha, 264 float* x, 265 int incx); 266 267 /* host or device pointer */ 268 cublasStatus_t cublasDscal_v2 ( 269 cublasHandle_t handle, 270 int n, 271 const(double)* alpha, 272 double* x, 273 int incx); 274 275 /* host or device pointer */ 276 cublasStatus_t cublasCscal_v2 ( 277 cublasHandle_t handle, 278 int n, 279 const(cuComplex)* alpha, 280 cuComplex* x, 281 int incx); 282 283 /* host or device pointer */ 284 cublasStatus_t cublasCsscal_v2 ( 285 cublasHandle_t handle, 286 int n, 287 const(float)* alpha, 288 cuComplex* x, 289 int incx); 290 291 /* host or device pointer */ 292 cublasStatus_t cublasZscal_v2 ( 293 cublasHandle_t handle, 294 int n, 295 const(cuDoubleComplex)* alpha, 296 cuDoubleComplex* x, 297 int incx); 298 299 /* host or device pointer */ 300 cublasStatus_t cublasZdscal_v2 ( 301 cublasHandle_t handle, 302 int n, 303 const(double)* alpha, 304 cuDoubleComplex* x, 305 int incx); 306 307 /* host or device pointer */ 308 cublasStatus_t cublasSaxpy_v2 ( 309 cublasHandle_t handle, 310 int n, 311 const(float)* alpha, 312 const(float)* x, 313 int incx, 314 float* y, 315 int incy); 316 317 /* host or device pointer */ 318 cublasStatus_t cublasDaxpy_v2 ( 319 cublasHandle_t handle, 320 int n, 321 const(double)* alpha, 322 const(double)* x, 323 int incx, 324 double* y, 325 int incy); 326 327 /* host or device pointer */ 328 cublasStatus_t cublasCaxpy_v2 ( 329 cublasHandle_t handle, 330 int n, 331 const(cuComplex)* alpha, 332 const(cuComplex)* x, 333 int incx, 334 cuComplex* y, 335 int incy); 336 337 /* host or device pointer */ 338 cublasStatus_t cublasZaxpy_v2 ( 339 cublasHandle_t handle, 340 int n, 341 const(cuDoubleComplex)* alpha, 342 const(cuDoubleComplex)* x, 343 int incx, 344 cuDoubleComplex* y, 345 int incy); 346 347 cublasStatus_t cublasScopy_v2 ( 348 cublasHandle_t handle, 349 int n, 350 const(float)* x, 351 int incx, 352 float* y, 353 int incy); 354 355 cublasStatus_t cublasDcopy_v2 ( 356 cublasHandle_t handle, 357 int n, 358 const(double)* x, 359 int incx, 360 double* y, 361 int incy); 362 363 cublasStatus_t cublasCcopy_v2 ( 364 cublasHandle_t handle, 365 int n, 366 const(cuComplex)* x, 367 int incx, 368 cuComplex* y, 369 int incy); 370 371 cublasStatus_t cublasZcopy_v2 ( 372 cublasHandle_t handle, 373 int n, 374 const(cuDoubleComplex)* x, 375 int incx, 376 cuDoubleComplex* y, 377 int incy); 378 379 cublasStatus_t cublasSswap_v2 ( 380 cublasHandle_t handle, 381 int n, 382 float* x, 383 int incx, 384 float* y, 385 int incy); 386 387 cublasStatus_t cublasDswap_v2 ( 388 cublasHandle_t handle, 389 int n, 390 double* x, 391 int incx, 392 double* y, 393 int incy); 394 395 cublasStatus_t cublasCswap_v2 ( 396 cublasHandle_t handle, 397 int n, 398 cuComplex* x, 399 int incx, 400 cuComplex* y, 401 int incy); 402 403 cublasStatus_t cublasZswap_v2 ( 404 cublasHandle_t handle, 405 int n, 406 cuDoubleComplex* x, 407 int incx, 408 cuDoubleComplex* y, 409 int incy); 410 411 cublasStatus_t cublasIsamax_v2 ( 412 cublasHandle_t handle, 413 int n, 414 const(float)* x, 415 int incx, 416 int* result); /* host or device pointer */ 417 418 cublasStatus_t cublasIdamax_v2 ( 419 cublasHandle_t handle, 420 int n, 421 const(double)* x, 422 int incx, 423 int* result); /* host or device pointer */ 424 425 cublasStatus_t cublasIcamax_v2 ( 426 cublasHandle_t handle, 427 int n, 428 const(cuComplex)* x, 429 int incx, 430 int* result); /* host or device pointer */ 431 432 cublasStatus_t cublasIzamax_v2 ( 433 cublasHandle_t handle, 434 int n, 435 const(cuDoubleComplex)* x, 436 int incx, 437 int* result); /* host or device pointer */ 438 439 cublasStatus_t cublasIsamin_v2 ( 440 cublasHandle_t handle, 441 int n, 442 const(float)* x, 443 int incx, 444 int* result); /* host or device pointer */ 445 446 cublasStatus_t cublasIdamin_v2 ( 447 cublasHandle_t handle, 448 int n, 449 const(double)* x, 450 int incx, 451 int* result); /* host or device pointer */ 452 453 cublasStatus_t cublasIcamin_v2 ( 454 cublasHandle_t handle, 455 int n, 456 const(cuComplex)* x, 457 int incx, 458 int* result); /* host or device pointer */ 459 460 cublasStatus_t cublasIzamin_v2 ( 461 cublasHandle_t handle, 462 int n, 463 const(cuDoubleComplex)* x, 464 int incx, 465 int* result); /* host or device pointer */ 466 467 cublasStatus_t cublasSasum_v2 ( 468 cublasHandle_t handle, 469 int n, 470 const(float)* x, 471 int incx, 472 float* result); /* host or device pointer */ 473 474 cublasStatus_t cublasDasum_v2 ( 475 cublasHandle_t handle, 476 int n, 477 const(double)* x, 478 int incx, 479 double* result); /* host or device pointer */ 480 481 cublasStatus_t cublasScasum_v2 ( 482 cublasHandle_t handle, 483 int n, 484 const(cuComplex)* x, 485 int incx, 486 float* result); /* host or device pointer */ 487 488 cublasStatus_t cublasDzasum_v2 ( 489 cublasHandle_t handle, 490 int n, 491 const(cuDoubleComplex)* x, 492 int incx, 493 double* result); /* host or device pointer */ 494 495 /* host or device pointer */ 496 cublasStatus_t cublasSrot_v2 ( 497 cublasHandle_t handle, 498 int n, 499 float* x, 500 int incx, 501 float* y, 502 int incy, 503 const(float)* c, 504 const(float)* s); /* host or device pointer */ 505 506 /* host or device pointer */ 507 cublasStatus_t cublasDrot_v2 ( 508 cublasHandle_t handle, 509 int n, 510 double* x, 511 int incx, 512 double* y, 513 int incy, 514 const(double)* c, 515 const(double)* s); /* host or device pointer */ 516 517 /* host or device pointer */ 518 cublasStatus_t cublasCrot_v2 ( 519 cublasHandle_t handle, 520 int n, 521 cuComplex* x, 522 int incx, 523 cuComplex* y, 524 int incy, 525 const(float)* c, 526 const(cuComplex)* s); /* host or device pointer */ 527 528 /* host or device pointer */ 529 cublasStatus_t cublasCsrot_v2 ( 530 cublasHandle_t handle, 531 int n, 532 cuComplex* x, 533 int incx, 534 cuComplex* y, 535 int incy, 536 const(float)* c, 537 const(float)* s); /* host or device pointer */ 538 539 /* host or device pointer */ 540 cublasStatus_t cublasZrot_v2 ( 541 cublasHandle_t handle, 542 int n, 543 cuDoubleComplex* x, 544 int incx, 545 cuDoubleComplex* y, 546 int incy, 547 const(double)* c, 548 const(cuDoubleComplex)* s); /* host or device pointer */ 549 550 /* host or device pointer */ 551 cublasStatus_t cublasZdrot_v2 ( 552 cublasHandle_t handle, 553 int n, 554 cuDoubleComplex* x, 555 int incx, 556 cuDoubleComplex* y, 557 int incy, 558 const(double)* c, 559 const(double)* s); /* host or device pointer */ 560 561 /* host or device pointer */ 562 /* host or device pointer */ 563 /* host or device pointer */ 564 cublasStatus_t cublasSrotg_v2 ( 565 cublasHandle_t handle, 566 float* a, 567 float* b, 568 float* c, 569 float* s); /* host or device pointer */ 570 571 /* host or device pointer */ 572 /* host or device pointer */ 573 /* host or device pointer */ 574 cublasStatus_t cublasDrotg_v2 ( 575 cublasHandle_t handle, 576 double* a, 577 double* b, 578 double* c, 579 double* s); /* host or device pointer */ 580 581 /* host or device pointer */ 582 /* host or device pointer */ 583 /* host or device pointer */ 584 cublasStatus_t cublasCrotg_v2 ( 585 cublasHandle_t handle, 586 cuComplex* a, 587 cuComplex* b, 588 float* c, 589 cuComplex* s); /* host or device pointer */ 590 591 /* host or device pointer */ 592 /* host or device pointer */ 593 /* host or device pointer */ 594 cublasStatus_t cublasZrotg_v2 ( 595 cublasHandle_t handle, 596 cuDoubleComplex* a, 597 cuDoubleComplex* b, 598 double* c, 599 cuDoubleComplex* s); /* host or device pointer */ 600 601 cublasStatus_t cublasSrotm_v2 ( 602 cublasHandle_t handle, 603 int n, 604 float* x, 605 int incx, 606 float* y, 607 int incy, 608 const(float)* param); /* host or device pointer */ 609 610 cublasStatus_t cublasDrotm_v2 ( 611 cublasHandle_t handle, 612 int n, 613 double* x, 614 int incx, 615 double* y, 616 int incy, 617 const(double)* param); /* host or device pointer */ 618 619 /* host or device pointer */ 620 /* host or device pointer */ 621 /* host or device pointer */ 622 /* host or device pointer */ 623 cublasStatus_t cublasSrotmg_v2 ( 624 cublasHandle_t handle, 625 float* d1, 626 float* d2, 627 float* x1, 628 const(float)* y1, 629 float* param); /* host or device pointer */ 630 631 /* host or device pointer */ 632 /* host or device pointer */ 633 /* host or device pointer */ 634 /* host or device pointer */ 635 cublasStatus_t cublasDrotmg_v2 ( 636 cublasHandle_t handle, 637 double* d1, 638 double* d2, 639 double* x1, 640 const(double)* y1, 641 double* param 642 ); 643 644 /* host or device pointer */ 645 646 /* --------------- CUBLAS BLAS2 functions ---------------- */ 647 648 /* GEMV */ 649 650 /* host or device pointer */ 651 652 /* host or device pointer */ 653 cublasStatus_t cublasSgemv_v2 ( 654 cublasHandle_t handle, 655 cublasOperation_t trans, 656 int m, 657 int n, 658 const(float)* alpha, 659 const(float)* A, 660 int lda, 661 const(float)* x, 662 int incx, 663 const(float)* beta, 664 float* y, 665 int incy); 666 667 /* host or device pointer */ 668 669 /* host or device pointer */ 670 cublasStatus_t cublasDgemv_v2 ( 671 cublasHandle_t handle, 672 cublasOperation_t trans, 673 int m, 674 int n, 675 const(double)* alpha, 676 const(double)* A, 677 int lda, 678 const(double)* x, 679 int incx, 680 const(double)* beta, 681 double* y, 682 int incy); 683 684 /* host or device pointer */ 685 686 /* host or device pointer */ 687 cublasStatus_t cublasCgemv_v2 ( 688 cublasHandle_t handle, 689 cublasOperation_t trans, 690 int m, 691 int n, 692 const(cuComplex)* alpha, 693 const(cuComplex)* A, 694 int lda, 695 const(cuComplex)* x, 696 int incx, 697 const(cuComplex)* beta, 698 cuComplex* y, 699 int incy); 700 701 /* host or device pointer */ 702 703 /* host or device pointer */ 704 cublasStatus_t cublasZgemv_v2 ( 705 cublasHandle_t handle, 706 cublasOperation_t trans, 707 int m, 708 int n, 709 const(cuDoubleComplex)* alpha, 710 const(cuDoubleComplex)* A, 711 int lda, 712 const(cuDoubleComplex)* x, 713 int incx, 714 const(cuDoubleComplex)* beta, 715 cuDoubleComplex* y, 716 int incy); 717 718 /* GBMV */ 719 720 /* host or device pointer */ 721 722 /* host or device pointer */ 723 cublasStatus_t cublasSgbmv_v2 ( 724 cublasHandle_t handle, 725 cublasOperation_t trans, 726 int m, 727 int n, 728 int kl, 729 int ku, 730 const(float)* alpha, 731 const(float)* A, 732 int lda, 733 const(float)* x, 734 int incx, 735 const(float)* beta, 736 float* y, 737 int incy); 738 739 /* host or device pointer */ 740 741 /* host or device pointer */ 742 cublasStatus_t cublasDgbmv_v2 ( 743 cublasHandle_t handle, 744 cublasOperation_t trans, 745 int m, 746 int n, 747 int kl, 748 int ku, 749 const(double)* alpha, 750 const(double)* A, 751 int lda, 752 const(double)* x, 753 int incx, 754 const(double)* beta, 755 double* y, 756 int incy); 757 758 /* host or device pointer */ 759 760 /* host or device pointer */ 761 cublasStatus_t cublasCgbmv_v2 ( 762 cublasHandle_t handle, 763 cublasOperation_t trans, 764 int m, 765 int n, 766 int kl, 767 int ku, 768 const(cuComplex)* alpha, 769 const(cuComplex)* A, 770 int lda, 771 const(cuComplex)* x, 772 int incx, 773 const(cuComplex)* beta, 774 cuComplex* y, 775 int incy); 776 777 /* host or device pointer */ 778 779 /* host or device pointer */ 780 cublasStatus_t cublasZgbmv_v2 ( 781 cublasHandle_t handle, 782 cublasOperation_t trans, 783 int m, 784 int n, 785 int kl, 786 int ku, 787 const(cuDoubleComplex)* alpha, 788 const(cuDoubleComplex)* A, 789 int lda, 790 const(cuDoubleComplex)* x, 791 int incx, 792 const(cuDoubleComplex)* beta, 793 cuDoubleComplex* y, 794 int incy); 795 796 /* TRMV */ 797 cublasStatus_t cublasStrmv_v2 ( 798 cublasHandle_t handle, 799 cublasFillMode_t uplo, 800 cublasOperation_t trans, 801 cublasDiagType_t diag, 802 int n, 803 const(float)* A, 804 int lda, 805 float* x, 806 int incx); 807 808 cublasStatus_t cublasDtrmv_v2 ( 809 cublasHandle_t handle, 810 cublasFillMode_t uplo, 811 cublasOperation_t trans, 812 cublasDiagType_t diag, 813 int n, 814 const(double)* A, 815 int lda, 816 double* x, 817 int incx); 818 819 cublasStatus_t cublasCtrmv_v2 ( 820 cublasHandle_t handle, 821 cublasFillMode_t uplo, 822 cublasOperation_t trans, 823 cublasDiagType_t diag, 824 int n, 825 const(cuComplex)* A, 826 int lda, 827 cuComplex* x, 828 int incx); 829 830 cublasStatus_t cublasZtrmv_v2 ( 831 cublasHandle_t handle, 832 cublasFillMode_t uplo, 833 cublasOperation_t trans, 834 cublasDiagType_t diag, 835 int n, 836 const(cuDoubleComplex)* A, 837 int lda, 838 cuDoubleComplex* x, 839 int incx); 840 841 /* TBMV */ 842 cublasStatus_t cublasStbmv_v2 ( 843 cublasHandle_t handle, 844 cublasFillMode_t uplo, 845 cublasOperation_t trans, 846 cublasDiagType_t diag, 847 int n, 848 int k, 849 const(float)* A, 850 int lda, 851 float* x, 852 int incx); 853 854 cublasStatus_t cublasDtbmv_v2 ( 855 cublasHandle_t handle, 856 cublasFillMode_t uplo, 857 cublasOperation_t trans, 858 cublasDiagType_t diag, 859 int n, 860 int k, 861 const(double)* A, 862 int lda, 863 double* x, 864 int incx); 865 866 cublasStatus_t cublasCtbmv_v2 ( 867 cublasHandle_t handle, 868 cublasFillMode_t uplo, 869 cublasOperation_t trans, 870 cublasDiagType_t diag, 871 int n, 872 int k, 873 const(cuComplex)* A, 874 int lda, 875 cuComplex* x, 876 int incx); 877 878 cublasStatus_t cublasZtbmv_v2 ( 879 cublasHandle_t handle, 880 cublasFillMode_t uplo, 881 cublasOperation_t trans, 882 cublasDiagType_t diag, 883 int n, 884 int k, 885 const(cuDoubleComplex)* A, 886 int lda, 887 cuDoubleComplex* x, 888 int incx); 889 890 /* TPMV */ 891 cublasStatus_t cublasStpmv_v2 ( 892 cublasHandle_t handle, 893 cublasFillMode_t uplo, 894 cublasOperation_t trans, 895 cublasDiagType_t diag, 896 int n, 897 const(float)* AP, 898 float* x, 899 int incx); 900 901 cublasStatus_t cublasDtpmv_v2 ( 902 cublasHandle_t handle, 903 cublasFillMode_t uplo, 904 cublasOperation_t trans, 905 cublasDiagType_t diag, 906 int n, 907 const(double)* AP, 908 double* x, 909 int incx); 910 911 cublasStatus_t cublasCtpmv_v2 ( 912 cublasHandle_t handle, 913 cublasFillMode_t uplo, 914 cublasOperation_t trans, 915 cublasDiagType_t diag, 916 int n, 917 const(cuComplex)* AP, 918 cuComplex* x, 919 int incx); 920 921 cublasStatus_t cublasZtpmv_v2 ( 922 cublasHandle_t handle, 923 cublasFillMode_t uplo, 924 cublasOperation_t trans, 925 cublasDiagType_t diag, 926 int n, 927 const(cuDoubleComplex)* AP, 928 cuDoubleComplex* x, 929 int incx); 930 931 /* TRSV */ 932 cublasStatus_t cublasStrsv_v2 ( 933 cublasHandle_t handle, 934 cublasFillMode_t uplo, 935 cublasOperation_t trans, 936 cublasDiagType_t diag, 937 int n, 938 const(float)* A, 939 int lda, 940 float* x, 941 int incx); 942 943 cublasStatus_t cublasDtrsv_v2 ( 944 cublasHandle_t handle, 945 cublasFillMode_t uplo, 946 cublasOperation_t trans, 947 cublasDiagType_t diag, 948 int n, 949 const(double)* A, 950 int lda, 951 double* x, 952 int incx); 953 954 cublasStatus_t cublasCtrsv_v2 ( 955 cublasHandle_t handle, 956 cublasFillMode_t uplo, 957 cublasOperation_t trans, 958 cublasDiagType_t diag, 959 int n, 960 const(cuComplex)* A, 961 int lda, 962 cuComplex* x, 963 int incx); 964 965 cublasStatus_t cublasZtrsv_v2 ( 966 cublasHandle_t handle, 967 cublasFillMode_t uplo, 968 cublasOperation_t trans, 969 cublasDiagType_t diag, 970 int n, 971 const(cuDoubleComplex)* A, 972 int lda, 973 cuDoubleComplex* x, 974 int incx); 975 976 /* TPSV */ 977 cublasStatus_t cublasStpsv_v2 ( 978 cublasHandle_t handle, 979 cublasFillMode_t uplo, 980 cublasOperation_t trans, 981 cublasDiagType_t diag, 982 int n, 983 const(float)* AP, 984 float* x, 985 int incx); 986 987 cublasStatus_t cublasDtpsv_v2 ( 988 cublasHandle_t handle, 989 cublasFillMode_t uplo, 990 cublasOperation_t trans, 991 cublasDiagType_t diag, 992 int n, 993 const(double)* AP, 994 double* x, 995 int incx); 996 997 cublasStatus_t cublasCtpsv_v2 ( 998 cublasHandle_t handle, 999 cublasFillMode_t uplo, 1000 cublasOperation_t trans, 1001 cublasDiagType_t diag, 1002 int n, 1003 const(cuComplex)* AP, 1004 cuComplex* x, 1005 int incx); 1006 1007 cublasStatus_t cublasZtpsv_v2 ( 1008 cublasHandle_t handle, 1009 cublasFillMode_t uplo, 1010 cublasOperation_t trans, 1011 cublasDiagType_t diag, 1012 int n, 1013 const(cuDoubleComplex)* AP, 1014 cuDoubleComplex* x, 1015 int incx); 1016 1017 /* TBSV */ 1018 cublasStatus_t cublasStbsv_v2 ( 1019 cublasHandle_t handle, 1020 cublasFillMode_t uplo, 1021 cublasOperation_t trans, 1022 cublasDiagType_t diag, 1023 int n, 1024 int k, 1025 const(float)* A, 1026 int lda, 1027 float* x, 1028 int incx); 1029 1030 cublasStatus_t cublasDtbsv_v2 ( 1031 cublasHandle_t handle, 1032 cublasFillMode_t uplo, 1033 cublasOperation_t trans, 1034 cublasDiagType_t diag, 1035 int n, 1036 int k, 1037 const(double)* A, 1038 int lda, 1039 double* x, 1040 int incx); 1041 1042 cublasStatus_t cublasCtbsv_v2 ( 1043 cublasHandle_t handle, 1044 cublasFillMode_t uplo, 1045 cublasOperation_t trans, 1046 cublasDiagType_t diag, 1047 int n, 1048 int k, 1049 const(cuComplex)* A, 1050 int lda, 1051 cuComplex* x, 1052 int incx); 1053 1054 cublasStatus_t cublasZtbsv_v2 ( 1055 cublasHandle_t handle, 1056 cublasFillMode_t uplo, 1057 cublasOperation_t trans, 1058 cublasDiagType_t diag, 1059 int n, 1060 int k, 1061 const(cuDoubleComplex)* A, 1062 int lda, 1063 cuDoubleComplex* x, 1064 int incx); 1065 1066 /* SYMV/HEMV */ 1067 1068 /* host or device pointer */ 1069 1070 /* host or device pointer */ 1071 cublasStatus_t cublasSsymv_v2 ( 1072 cublasHandle_t handle, 1073 cublasFillMode_t uplo, 1074 int n, 1075 const(float)* alpha, 1076 const(float)* A, 1077 int lda, 1078 const(float)* x, 1079 int incx, 1080 const(float)* beta, 1081 float* y, 1082 int incy); 1083 1084 /* host or device pointer */ 1085 1086 /* host or device pointer */ 1087 cublasStatus_t cublasDsymv_v2 ( 1088 cublasHandle_t handle, 1089 cublasFillMode_t uplo, 1090 int n, 1091 const(double)* alpha, 1092 const(double)* A, 1093 int lda, 1094 const(double)* x, 1095 int incx, 1096 const(double)* beta, 1097 double* y, 1098 int incy); 1099 1100 /* host or device pointer */ 1101 1102 /* host or device pointer */ 1103 cublasStatus_t cublasCsymv_v2 ( 1104 cublasHandle_t handle, 1105 cublasFillMode_t uplo, 1106 int n, 1107 const(cuComplex)* alpha, 1108 const(cuComplex)* A, 1109 int lda, 1110 const(cuComplex)* x, 1111 int incx, 1112 const(cuComplex)* beta, 1113 cuComplex* y, 1114 int incy); 1115 1116 /* host or device pointer */ 1117 1118 /* host or device pointer */ 1119 cublasStatus_t cublasZsymv_v2 ( 1120 cublasHandle_t handle, 1121 cublasFillMode_t uplo, 1122 int n, 1123 const(cuDoubleComplex)* alpha, 1124 const(cuDoubleComplex)* A, 1125 int lda, 1126 const(cuDoubleComplex)* x, 1127 int incx, 1128 const(cuDoubleComplex)* beta, 1129 cuDoubleComplex* y, 1130 int incy); 1131 1132 /* host or device pointer */ 1133 1134 /* host or device pointer */ 1135 cublasStatus_t cublasChemv_v2 ( 1136 cublasHandle_t handle, 1137 cublasFillMode_t uplo, 1138 int n, 1139 const(cuComplex)* alpha, 1140 const(cuComplex)* A, 1141 int lda, 1142 const(cuComplex)* x, 1143 int incx, 1144 const(cuComplex)* beta, 1145 cuComplex* y, 1146 int incy); 1147 1148 /* host or device pointer */ 1149 1150 /* host or device pointer */ 1151 cublasStatus_t cublasZhemv_v2 ( 1152 cublasHandle_t handle, 1153 cublasFillMode_t uplo, 1154 int n, 1155 const(cuDoubleComplex)* alpha, 1156 const(cuDoubleComplex)* A, 1157 int lda, 1158 const(cuDoubleComplex)* x, 1159 int incx, 1160 const(cuDoubleComplex)* beta, 1161 cuDoubleComplex* y, 1162 int incy); 1163 1164 /* SBMV/HBMV */ 1165 1166 /* host or device pointer */ 1167 1168 /* host or device pointer */ 1169 cublasStatus_t cublasSsbmv_v2 ( 1170 cublasHandle_t handle, 1171 cublasFillMode_t uplo, 1172 int n, 1173 int k, 1174 const(float)* alpha, 1175 const(float)* A, 1176 int lda, 1177 const(float)* x, 1178 int incx, 1179 const(float)* beta, 1180 float* y, 1181 int incy); 1182 1183 /* host or device pointer */ 1184 1185 /* host or device pointer */ 1186 cublasStatus_t cublasDsbmv_v2 ( 1187 cublasHandle_t handle, 1188 cublasFillMode_t uplo, 1189 int n, 1190 int k, 1191 const(double)* alpha, 1192 const(double)* A, 1193 int lda, 1194 const(double)* x, 1195 int incx, 1196 const(double)* beta, 1197 double* y, 1198 int incy); 1199 1200 /* host or device pointer */ 1201 1202 /* host or device pointer */ 1203 cublasStatus_t cublasChbmv_v2 ( 1204 cublasHandle_t handle, 1205 cublasFillMode_t uplo, 1206 int n, 1207 int k, 1208 const(cuComplex)* alpha, 1209 const(cuComplex)* A, 1210 int lda, 1211 const(cuComplex)* x, 1212 int incx, 1213 const(cuComplex)* beta, 1214 cuComplex* y, 1215 int incy); 1216 1217 /* host or device pointer */ 1218 1219 /* host or device pointer */ 1220 cublasStatus_t cublasZhbmv_v2 ( 1221 cublasHandle_t handle, 1222 cublasFillMode_t uplo, 1223 int n, 1224 int k, 1225 const(cuDoubleComplex)* alpha, 1226 const(cuDoubleComplex)* A, 1227 int lda, 1228 const(cuDoubleComplex)* x, 1229 int incx, 1230 const(cuDoubleComplex)* beta, 1231 cuDoubleComplex* y, 1232 int incy); 1233 1234 /* SPMV/HPMV */ 1235 1236 /* host or device pointer */ 1237 1238 /* host or device pointer */ 1239 cublasStatus_t cublasSspmv_v2 ( 1240 cublasHandle_t handle, 1241 cublasFillMode_t uplo, 1242 int n, 1243 const(float)* alpha, 1244 const(float)* AP, 1245 const(float)* x, 1246 int incx, 1247 const(float)* beta, 1248 float* y, 1249 int incy); 1250 1251 /* host or device pointer */ 1252 1253 /* host or device pointer */ 1254 cublasStatus_t cublasDspmv_v2 ( 1255 cublasHandle_t handle, 1256 cublasFillMode_t uplo, 1257 int n, 1258 const(double)* alpha, 1259 const(double)* AP, 1260 const(double)* x, 1261 int incx, 1262 const(double)* beta, 1263 double* y, 1264 int incy); 1265 1266 /* host or device pointer */ 1267 1268 /* host or device pointer */ 1269 cublasStatus_t cublasChpmv_v2 ( 1270 cublasHandle_t handle, 1271 cublasFillMode_t uplo, 1272 int n, 1273 const(cuComplex)* alpha, 1274 const(cuComplex)* AP, 1275 const(cuComplex)* x, 1276 int incx, 1277 const(cuComplex)* beta, 1278 cuComplex* y, 1279 int incy); 1280 1281 /* host or device pointer */ 1282 1283 /* host or device pointer */ 1284 cublasStatus_t cublasZhpmv_v2 ( 1285 cublasHandle_t handle, 1286 cublasFillMode_t uplo, 1287 int n, 1288 const(cuDoubleComplex)* alpha, 1289 const(cuDoubleComplex)* AP, 1290 const(cuDoubleComplex)* x, 1291 int incx, 1292 const(cuDoubleComplex)* beta, 1293 cuDoubleComplex* y, 1294 int incy); 1295 1296 /* GER */ 1297 1298 /* host or device pointer */ 1299 cublasStatus_t cublasSger_v2 ( 1300 cublasHandle_t handle, 1301 int m, 1302 int n, 1303 const(float)* alpha, 1304 const(float)* x, 1305 int incx, 1306 const(float)* y, 1307 int incy, 1308 float* A, 1309 int lda); 1310 1311 /* host or device pointer */ 1312 cublasStatus_t cublasDger_v2 ( 1313 cublasHandle_t handle, 1314 int m, 1315 int n, 1316 const(double)* alpha, 1317 const(double)* x, 1318 int incx, 1319 const(double)* y, 1320 int incy, 1321 double* A, 1322 int lda); 1323 1324 /* host or device pointer */ 1325 cublasStatus_t cublasCgeru_v2 ( 1326 cublasHandle_t handle, 1327 int m, 1328 int n, 1329 const(cuComplex)* alpha, 1330 const(cuComplex)* x, 1331 int incx, 1332 const(cuComplex)* y, 1333 int incy, 1334 cuComplex* A, 1335 int lda); 1336 1337 /* host or device pointer */ 1338 cublasStatus_t cublasCgerc_v2 ( 1339 cublasHandle_t handle, 1340 int m, 1341 int n, 1342 const(cuComplex)* alpha, 1343 const(cuComplex)* x, 1344 int incx, 1345 const(cuComplex)* y, 1346 int incy, 1347 cuComplex* A, 1348 int lda); 1349 1350 /* host or device pointer */ 1351 cublasStatus_t cublasZgeru_v2 ( 1352 cublasHandle_t handle, 1353 int m, 1354 int n, 1355 const(cuDoubleComplex)* alpha, 1356 const(cuDoubleComplex)* x, 1357 int incx, 1358 const(cuDoubleComplex)* y, 1359 int incy, 1360 cuDoubleComplex* A, 1361 int lda); 1362 1363 /* host or device pointer */ 1364 cublasStatus_t cublasZgerc_v2 ( 1365 cublasHandle_t handle, 1366 int m, 1367 int n, 1368 const(cuDoubleComplex)* alpha, 1369 const(cuDoubleComplex)* x, 1370 int incx, 1371 const(cuDoubleComplex)* y, 1372 int incy, 1373 cuDoubleComplex* A, 1374 int lda); 1375 1376 /* SYR/HER */ 1377 1378 /* host or device pointer */ 1379 cublasStatus_t cublasSsyr_v2 ( 1380 cublasHandle_t handle, 1381 cublasFillMode_t uplo, 1382 int n, 1383 const(float)* alpha, 1384 const(float)* x, 1385 int incx, 1386 float* A, 1387 int lda); 1388 1389 /* host or device pointer */ 1390 cublasStatus_t cublasDsyr_v2 ( 1391 cublasHandle_t handle, 1392 cublasFillMode_t uplo, 1393 int n, 1394 const(double)* alpha, 1395 const(double)* x, 1396 int incx, 1397 double* A, 1398 int lda); 1399 1400 /* host or device pointer */ 1401 cublasStatus_t cublasCsyr_v2 ( 1402 cublasHandle_t handle, 1403 cublasFillMode_t uplo, 1404 int n, 1405 const(cuComplex)* alpha, 1406 const(cuComplex)* x, 1407 int incx, 1408 cuComplex* A, 1409 int lda); 1410 1411 /* host or device pointer */ 1412 cublasStatus_t cublasZsyr_v2 ( 1413 cublasHandle_t handle, 1414 cublasFillMode_t uplo, 1415 int n, 1416 const(cuDoubleComplex)* alpha, 1417 const(cuDoubleComplex)* x, 1418 int incx, 1419 cuDoubleComplex* A, 1420 int lda); 1421 1422 /* host or device pointer */ 1423 cublasStatus_t cublasCher_v2 ( 1424 cublasHandle_t handle, 1425 cublasFillMode_t uplo, 1426 int n, 1427 const(float)* alpha, 1428 const(cuComplex)* x, 1429 int incx, 1430 cuComplex* A, 1431 int lda); 1432 1433 /* host or device pointer */ 1434 cublasStatus_t cublasZher_v2 ( 1435 cublasHandle_t handle, 1436 cublasFillMode_t uplo, 1437 int n, 1438 const(double)* alpha, 1439 const(cuDoubleComplex)* x, 1440 int incx, 1441 cuDoubleComplex* A, 1442 int lda); 1443 1444 /* SPR/HPR */ 1445 1446 /* host or device pointer */ 1447 cublasStatus_t cublasSspr_v2 ( 1448 cublasHandle_t handle, 1449 cublasFillMode_t uplo, 1450 int n, 1451 const(float)* alpha, 1452 const(float)* x, 1453 int incx, 1454 float* AP); 1455 1456 /* host or device pointer */ 1457 cublasStatus_t cublasDspr_v2 ( 1458 cublasHandle_t handle, 1459 cublasFillMode_t uplo, 1460 int n, 1461 const(double)* alpha, 1462 const(double)* x, 1463 int incx, 1464 double* AP); 1465 1466 /* host or device pointer */ 1467 cublasStatus_t cublasChpr_v2 ( 1468 cublasHandle_t handle, 1469 cublasFillMode_t uplo, 1470 int n, 1471 const(float)* alpha, 1472 const(cuComplex)* x, 1473 int incx, 1474 cuComplex* AP); 1475 1476 /* host or device pointer */ 1477 cublasStatus_t cublasZhpr_v2 ( 1478 cublasHandle_t handle, 1479 cublasFillMode_t uplo, 1480 int n, 1481 const(double)* alpha, 1482 const(cuDoubleComplex)* x, 1483 int incx, 1484 cuDoubleComplex* AP); 1485 1486 /* SYR2/HER2 */ 1487 1488 /* host or device pointer */ 1489 cublasStatus_t cublasSsyr2_v2 ( 1490 cublasHandle_t handle, 1491 cublasFillMode_t uplo, 1492 int n, 1493 const(float)* alpha, 1494 const(float)* x, 1495 int incx, 1496 const(float)* y, 1497 int incy, 1498 float* A, 1499 int lda); 1500 1501 /* host or device pointer */ 1502 cublasStatus_t cublasDsyr2_v2 ( 1503 cublasHandle_t handle, 1504 cublasFillMode_t uplo, 1505 int n, 1506 const(double)* alpha, 1507 const(double)* x, 1508 int incx, 1509 const(double)* y, 1510 int incy, 1511 double* A, 1512 int lda); 1513 1514 /* host or device pointer */ 1515 cublasStatus_t cublasCsyr2_v2 ( 1516 cublasHandle_t handle, 1517 cublasFillMode_t uplo, 1518 int n, 1519 const(cuComplex)* alpha, 1520 const(cuComplex)* x, 1521 int incx, 1522 const(cuComplex)* y, 1523 int incy, 1524 cuComplex* A, 1525 int lda); 1526 1527 /* host or device pointer */ 1528 cublasStatus_t cublasZsyr2_v2 ( 1529 cublasHandle_t handle, 1530 cublasFillMode_t uplo, 1531 int n, 1532 const(cuDoubleComplex)* alpha, 1533 const(cuDoubleComplex)* x, 1534 int incx, 1535 const(cuDoubleComplex)* y, 1536 int incy, 1537 cuDoubleComplex* A, 1538 int lda); 1539 1540 /* host or device pointer */ 1541 cublasStatus_t cublasCher2_v2 ( 1542 cublasHandle_t handle, 1543 cublasFillMode_t uplo, 1544 int n, 1545 const(cuComplex)* alpha, 1546 const(cuComplex)* x, 1547 int incx, 1548 const(cuComplex)* y, 1549 int incy, 1550 cuComplex* A, 1551 int lda); 1552 1553 /* host or device pointer */ 1554 cublasStatus_t cublasZher2_v2 ( 1555 cublasHandle_t handle, 1556 cublasFillMode_t uplo, 1557 int n, 1558 const(cuDoubleComplex)* alpha, 1559 const(cuDoubleComplex)* x, 1560 int incx, 1561 const(cuDoubleComplex)* y, 1562 int incy, 1563 cuDoubleComplex* A, 1564 int lda); 1565 1566 /* SPR2/HPR2 */ 1567 1568 /* host or device pointer */ 1569 cublasStatus_t cublasSspr2_v2 ( 1570 cublasHandle_t handle, 1571 cublasFillMode_t uplo, 1572 int n, 1573 const(float)* alpha, 1574 const(float)* x, 1575 int incx, 1576 const(float)* y, 1577 int incy, 1578 float* AP); 1579 1580 /* host or device pointer */ 1581 cublasStatus_t cublasDspr2_v2 ( 1582 cublasHandle_t handle, 1583 cublasFillMode_t uplo, 1584 int n, 1585 const(double)* alpha, 1586 const(double)* x, 1587 int incx, 1588 const(double)* y, 1589 int incy, 1590 double* AP); 1591 1592 /* host or device pointer */ 1593 cublasStatus_t cublasChpr2_v2 ( 1594 cublasHandle_t handle, 1595 cublasFillMode_t uplo, 1596 int n, 1597 const(cuComplex)* alpha, 1598 const(cuComplex)* x, 1599 int incx, 1600 const(cuComplex)* y, 1601 int incy, 1602 cuComplex* AP); 1603 1604 /* host or device pointer */ 1605 cublasStatus_t cublasZhpr2_v2 ( 1606 cublasHandle_t handle, 1607 cublasFillMode_t uplo, 1608 int n, 1609 const(cuDoubleComplex)* alpha, 1610 const(cuDoubleComplex)* x, 1611 int incx, 1612 const(cuDoubleComplex)* y, 1613 int incy, 1614 cuDoubleComplex* AP); 1615 1616 /* ---------------- CUBLAS BLAS3 functions ---------------- */ 1617 1618 /* GEMM */ 1619 1620 /* host or device pointer */ 1621 1622 /* host or device pointer */ 1623 cublasStatus_t cublasSgemm_v2 ( 1624 cublasHandle_t handle, 1625 cublasOperation_t transa, 1626 cublasOperation_t transb, 1627 int m, 1628 int n, 1629 int k, 1630 const(float)* alpha, 1631 const(float)* A, 1632 int lda, 1633 const(float)* B, 1634 int ldb, 1635 const(float)* beta, 1636 float* C, 1637 int ldc); 1638 1639 /* host or device pointer */ 1640 1641 /* host or device pointer */ 1642 cublasStatus_t cublasDgemm_v2 ( 1643 cublasHandle_t handle, 1644 cublasOperation_t transa, 1645 cublasOperation_t transb, 1646 int m, 1647 int n, 1648 int k, 1649 const(double)* alpha, 1650 const(double)* A, 1651 int lda, 1652 const(double)* B, 1653 int ldb, 1654 const(double)* beta, 1655 double* C, 1656 int ldc); 1657 1658 /* host or device pointer */ 1659 1660 /* host or device pointer */ 1661 cublasStatus_t cublasCgemm_v2 ( 1662 cublasHandle_t handle, 1663 cublasOperation_t transa, 1664 cublasOperation_t transb, 1665 int m, 1666 int n, 1667 int k, 1668 const(cuComplex)* alpha, 1669 const(cuComplex)* A, 1670 int lda, 1671 const(cuComplex)* B, 1672 int ldb, 1673 const(cuComplex)* beta, 1674 cuComplex* C, 1675 int ldc); 1676 1677 /* host or device pointer */ 1678 1679 /* host or device pointer */ 1680 cublasStatus_t cublasZgemm_v2 ( 1681 cublasHandle_t handle, 1682 cublasOperation_t transa, 1683 cublasOperation_t transb, 1684 int m, 1685 int n, 1686 int k, 1687 const(cuDoubleComplex)* alpha, 1688 const(cuDoubleComplex)* A, 1689 int lda, 1690 const(cuDoubleComplex)* B, 1691 int ldb, 1692 const(cuDoubleComplex)* beta, 1693 cuDoubleComplex* C, 1694 int ldc); 1695 1696 /* host or device pointer */ 1697 1698 /* host or device pointer */ 1699 cublasStatus_t cublasHgemm ( 1700 cublasHandle_t handle, 1701 cublasOperation_t transa, 1702 cublasOperation_t transb, 1703 int m, 1704 int n, 1705 int k, 1706 const(half)* alpha, 1707 const(half)* A, 1708 int lda, 1709 const(half)* B, 1710 int ldb, 1711 const(half)* beta, 1712 half* C, 1713 int ldc); 1714 1715 /* IO in FP16/FP32, computation in float */ 1716 1717 /* host or device pointer */ 1718 1719 /* host or device pointer */ 1720 cublasStatus_t cublasSgemmEx ( 1721 cublasHandle_t handle, 1722 cublasOperation_t transa, 1723 cublasOperation_t transb, 1724 int m, 1725 int n, 1726 int k, 1727 const(float)* alpha, 1728 const(void)* A, 1729 cublasDataType_t Atype, 1730 int lda, 1731 const(void)* B, 1732 cublasDataType_t Btype, 1733 int ldb, 1734 const(float)* beta, 1735 void* C, 1736 cublasDataType_t Ctype, 1737 int ldc); 1738 1739 /* SYRK */ 1740 1741 /* host or device pointer */ 1742 1743 /* host or device pointer */ 1744 cublasStatus_t cublasSsyrk_v2 ( 1745 cublasHandle_t handle, 1746 cublasFillMode_t uplo, 1747 cublasOperation_t trans, 1748 int n, 1749 int k, 1750 const(float)* alpha, 1751 const(float)* A, 1752 int lda, 1753 const(float)* beta, 1754 float* C, 1755 int ldc); 1756 1757 /* host or device pointer */ 1758 1759 /* host or device pointer */ 1760 cublasStatus_t cublasDsyrk_v2 ( 1761 cublasHandle_t handle, 1762 cublasFillMode_t uplo, 1763 cublasOperation_t trans, 1764 int n, 1765 int k, 1766 const(double)* alpha, 1767 const(double)* A, 1768 int lda, 1769 const(double)* beta, 1770 double* C, 1771 int ldc); 1772 1773 /* host or device pointer */ 1774 1775 /* host or device pointer */ 1776 cublasStatus_t cublasCsyrk_v2 ( 1777 cublasHandle_t handle, 1778 cublasFillMode_t uplo, 1779 cublasOperation_t trans, 1780 int n, 1781 int k, 1782 const(cuComplex)* alpha, 1783 const(cuComplex)* A, 1784 int lda, 1785 const(cuComplex)* beta, 1786 cuComplex* C, 1787 int ldc); 1788 1789 /* host or device pointer */ 1790 1791 /* host or device pointer */ 1792 cublasStatus_t cublasZsyrk_v2 ( 1793 cublasHandle_t handle, 1794 cublasFillMode_t uplo, 1795 cublasOperation_t trans, 1796 int n, 1797 int k, 1798 const(cuDoubleComplex)* alpha, 1799 const(cuDoubleComplex)* A, 1800 int lda, 1801 const(cuDoubleComplex)* beta, 1802 cuDoubleComplex* C, 1803 int ldc); 1804 1805 /* HERK */ 1806 1807 /* host or device pointer */ 1808 1809 /* host or device pointer */ 1810 cublasStatus_t cublasCherk_v2 ( 1811 cublasHandle_t handle, 1812 cublasFillMode_t uplo, 1813 cublasOperation_t trans, 1814 int n, 1815 int k, 1816 const(float)* alpha, 1817 const(cuComplex)* A, 1818 int lda, 1819 const(float)* beta, 1820 cuComplex* C, 1821 int ldc); 1822 1823 /* host or device pointer */ 1824 1825 /* host or device pointer */ 1826 cublasStatus_t cublasZherk_v2 ( 1827 cublasHandle_t handle, 1828 cublasFillMode_t uplo, 1829 cublasOperation_t trans, 1830 int n, 1831 int k, 1832 const(double)* alpha, 1833 const(cuDoubleComplex)* A, 1834 int lda, 1835 const(double)* beta, 1836 cuDoubleComplex* C, 1837 int ldc); 1838 1839 /* SYR2K */ 1840 1841 /* host or device pointer */ 1842 1843 /* host or device pointer */ 1844 cublasStatus_t cublasSsyr2k_v2 ( 1845 cublasHandle_t handle, 1846 cublasFillMode_t uplo, 1847 cublasOperation_t trans, 1848 int n, 1849 int k, 1850 const(float)* alpha, 1851 const(float)* A, 1852 int lda, 1853 const(float)* B, 1854 int ldb, 1855 const(float)* beta, 1856 float* C, 1857 int ldc); 1858 1859 /* host or device pointer */ 1860 1861 /* host or device pointer */ 1862 cublasStatus_t cublasDsyr2k_v2 ( 1863 cublasHandle_t handle, 1864 cublasFillMode_t uplo, 1865 cublasOperation_t trans, 1866 int n, 1867 int k, 1868 const(double)* alpha, 1869 const(double)* A, 1870 int lda, 1871 const(double)* B, 1872 int ldb, 1873 const(double)* beta, 1874 double* C, 1875 int ldc); 1876 1877 /* host or device pointer */ 1878 1879 /* host or device pointer */ 1880 cublasStatus_t cublasCsyr2k_v2 ( 1881 cublasHandle_t handle, 1882 cublasFillMode_t uplo, 1883 cublasOperation_t trans, 1884 int n, 1885 int k, 1886 const(cuComplex)* alpha, 1887 const(cuComplex)* A, 1888 int lda, 1889 const(cuComplex)* B, 1890 int ldb, 1891 const(cuComplex)* beta, 1892 cuComplex* C, 1893 int ldc); 1894 1895 /* host or device pointer */ 1896 1897 /* host or device pointer */ 1898 cublasStatus_t cublasZsyr2k_v2 ( 1899 cublasHandle_t handle, 1900 cublasFillMode_t uplo, 1901 cublasOperation_t trans, 1902 int n, 1903 int k, 1904 const(cuDoubleComplex)* alpha, 1905 const(cuDoubleComplex)* A, 1906 int lda, 1907 const(cuDoubleComplex)* B, 1908 int ldb, 1909 const(cuDoubleComplex)* beta, 1910 cuDoubleComplex* C, 1911 int ldc); 1912 1913 /* HER2K */ 1914 1915 /* host or device pointer */ 1916 1917 /* host or device pointer */ 1918 cublasStatus_t cublasCher2k_v2 ( 1919 cublasHandle_t handle, 1920 cublasFillMode_t uplo, 1921 cublasOperation_t trans, 1922 int n, 1923 int k, 1924 const(cuComplex)* alpha, 1925 const(cuComplex)* A, 1926 int lda, 1927 const(cuComplex)* B, 1928 int ldb, 1929 const(float)* beta, 1930 cuComplex* C, 1931 int ldc); 1932 1933 /* host or device pointer */ 1934 1935 /* host or device pointer */ 1936 cublasStatus_t cublasZher2k_v2 ( 1937 cublasHandle_t handle, 1938 cublasFillMode_t uplo, 1939 cublasOperation_t trans, 1940 int n, 1941 int k, 1942 const(cuDoubleComplex)* alpha, 1943 const(cuDoubleComplex)* A, 1944 int lda, 1945 const(cuDoubleComplex)* B, 1946 int ldb, 1947 const(double)* beta, 1948 cuDoubleComplex* C, 1949 int ldc); 1950 1951 /* SYRKX : eXtended SYRK*/ 1952 1953 /* host or device pointer */ 1954 1955 /* host or device pointer */ 1956 cublasStatus_t cublasSsyrkx ( 1957 cublasHandle_t handle, 1958 cublasFillMode_t uplo, 1959 cublasOperation_t trans, 1960 int n, 1961 int k, 1962 const(float)* alpha, 1963 const(float)* A, 1964 int lda, 1965 const(float)* B, 1966 int ldb, 1967 const(float)* beta, 1968 float* C, 1969 int ldc); 1970 1971 /* host or device pointer */ 1972 1973 /* host or device pointer */ 1974 cublasStatus_t cublasDsyrkx ( 1975 cublasHandle_t handle, 1976 cublasFillMode_t uplo, 1977 cublasOperation_t trans, 1978 int n, 1979 int k, 1980 const(double)* alpha, 1981 const(double)* A, 1982 int lda, 1983 const(double)* B, 1984 int ldb, 1985 const(double)* beta, 1986 double* C, 1987 int ldc); 1988 1989 /* host or device pointer */ 1990 1991 /* host or device pointer */ 1992 cublasStatus_t cublasCsyrkx ( 1993 cublasHandle_t handle, 1994 cublasFillMode_t uplo, 1995 cublasOperation_t trans, 1996 int n, 1997 int k, 1998 const(cuComplex)* alpha, 1999 const(cuComplex)* A, 2000 int lda, 2001 const(cuComplex)* B, 2002 int ldb, 2003 const(cuComplex)* beta, 2004 cuComplex* C, 2005 int ldc); 2006 2007 /* host or device pointer */ 2008 2009 /* host or device pointer */ 2010 cublasStatus_t cublasZsyrkx ( 2011 cublasHandle_t handle, 2012 cublasFillMode_t uplo, 2013 cublasOperation_t trans, 2014 int n, 2015 int k, 2016 const(cuDoubleComplex)* alpha, 2017 const(cuDoubleComplex)* A, 2018 int lda, 2019 const(cuDoubleComplex)* B, 2020 int ldb, 2021 const(cuDoubleComplex)* beta, 2022 cuDoubleComplex* C, 2023 int ldc); 2024 2025 /* HERKX : eXtended HERK */ 2026 2027 /* host or device pointer */ 2028 2029 /* host or device pointer */ 2030 cublasStatus_t cublasCherkx ( 2031 cublasHandle_t handle, 2032 cublasFillMode_t uplo, 2033 cublasOperation_t trans, 2034 int n, 2035 int k, 2036 const(cuComplex)* alpha, 2037 const(cuComplex)* A, 2038 int lda, 2039 const(cuComplex)* B, 2040 int ldb, 2041 const(float)* beta, 2042 cuComplex* C, 2043 int ldc); 2044 2045 /* host or device pointer */ 2046 2047 /* host or device pointer */ 2048 cublasStatus_t cublasZherkx ( 2049 cublasHandle_t handle, 2050 cublasFillMode_t uplo, 2051 cublasOperation_t trans, 2052 int n, 2053 int k, 2054 const(cuDoubleComplex)* alpha, 2055 const(cuDoubleComplex)* A, 2056 int lda, 2057 const(cuDoubleComplex)* B, 2058 int ldb, 2059 const(double)* beta, 2060 cuDoubleComplex* C, 2061 int ldc); 2062 2063 /* SYMM */ 2064 2065 /* host or device pointer */ 2066 2067 /* host or device pointer */ 2068 cublasStatus_t cublasSsymm_v2 ( 2069 cublasHandle_t handle, 2070 cublasSideMode_t side, 2071 cublasFillMode_t uplo, 2072 int m, 2073 int n, 2074 const(float)* alpha, 2075 const(float)* A, 2076 int lda, 2077 const(float)* B, 2078 int ldb, 2079 const(float)* beta, 2080 float* C, 2081 int ldc); 2082 2083 /* host or device pointer */ 2084 2085 /* host or device pointer */ 2086 cublasStatus_t cublasDsymm_v2 ( 2087 cublasHandle_t handle, 2088 cublasSideMode_t side, 2089 cublasFillMode_t uplo, 2090 int m, 2091 int n, 2092 const(double)* alpha, 2093 const(double)* A, 2094 int lda, 2095 const(double)* B, 2096 int ldb, 2097 const(double)* beta, 2098 double* C, 2099 int ldc); 2100 2101 /* host or device pointer */ 2102 2103 /* host or device pointer */ 2104 cublasStatus_t cublasCsymm_v2 ( 2105 cublasHandle_t handle, 2106 cublasSideMode_t side, 2107 cublasFillMode_t uplo, 2108 int m, 2109 int n, 2110 const(cuComplex)* alpha, 2111 const(cuComplex)* A, 2112 int lda, 2113 const(cuComplex)* B, 2114 int ldb, 2115 const(cuComplex)* beta, 2116 cuComplex* C, 2117 int ldc); 2118 2119 /* host or device pointer */ 2120 2121 /* host or device pointer */ 2122 cublasStatus_t cublasZsymm_v2 ( 2123 cublasHandle_t handle, 2124 cublasSideMode_t side, 2125 cublasFillMode_t uplo, 2126 int m, 2127 int n, 2128 const(cuDoubleComplex)* alpha, 2129 const(cuDoubleComplex)* A, 2130 int lda, 2131 const(cuDoubleComplex)* B, 2132 int ldb, 2133 const(cuDoubleComplex)* beta, 2134 cuDoubleComplex* C, 2135 int ldc); 2136 2137 /* HEMM */ 2138 2139 /* host or device pointer */ 2140 2141 /* host or device pointer */ 2142 cublasStatus_t cublasChemm_v2 ( 2143 cublasHandle_t handle, 2144 cublasSideMode_t side, 2145 cublasFillMode_t uplo, 2146 int m, 2147 int n, 2148 const(cuComplex)* alpha, 2149 const(cuComplex)* A, 2150 int lda, 2151 const(cuComplex)* B, 2152 int ldb, 2153 const(cuComplex)* beta, 2154 cuComplex* C, 2155 int ldc); 2156 2157 /* host or device pointer */ 2158 2159 /* host or device pointer */ 2160 cublasStatus_t cublasZhemm_v2 ( 2161 cublasHandle_t handle, 2162 cublasSideMode_t side, 2163 cublasFillMode_t uplo, 2164 int m, 2165 int n, 2166 const(cuDoubleComplex)* alpha, 2167 const(cuDoubleComplex)* A, 2168 int lda, 2169 const(cuDoubleComplex)* B, 2170 int ldb, 2171 const(cuDoubleComplex)* beta, 2172 cuDoubleComplex* C, 2173 int ldc); 2174 2175 /* TRSM */ 2176 2177 /* host or device pointer */ 2178 cublasStatus_t cublasStrsm_v2 ( 2179 cublasHandle_t handle, 2180 cublasSideMode_t side, 2181 cublasFillMode_t uplo, 2182 cublasOperation_t trans, 2183 cublasDiagType_t diag, 2184 int m, 2185 int n, 2186 const(float)* alpha, 2187 const(float)* A, 2188 int lda, 2189 float* B, 2190 int ldb); 2191 2192 /* host or device pointer */ 2193 cublasStatus_t cublasDtrsm_v2 ( 2194 cublasHandle_t handle, 2195 cublasSideMode_t side, 2196 cublasFillMode_t uplo, 2197 cublasOperation_t trans, 2198 cublasDiagType_t diag, 2199 int m, 2200 int n, 2201 const(double)* alpha, 2202 const(double)* A, 2203 int lda, 2204 double* B, 2205 int ldb); 2206 2207 /* host or device pointer */ 2208 cublasStatus_t cublasCtrsm_v2 ( 2209 cublasHandle_t handle, 2210 cublasSideMode_t side, 2211 cublasFillMode_t uplo, 2212 cublasOperation_t trans, 2213 cublasDiagType_t diag, 2214 int m, 2215 int n, 2216 const(cuComplex)* alpha, 2217 const(cuComplex)* A, 2218 int lda, 2219 cuComplex* B, 2220 int ldb); 2221 2222 /* host or device pointer */ 2223 cublasStatus_t cublasZtrsm_v2 ( 2224 cublasHandle_t handle, 2225 cublasSideMode_t side, 2226 cublasFillMode_t uplo, 2227 cublasOperation_t trans, 2228 cublasDiagType_t diag, 2229 int m, 2230 int n, 2231 const(cuDoubleComplex)* alpha, 2232 const(cuDoubleComplex)* A, 2233 int lda, 2234 cuDoubleComplex* B, 2235 int ldb); 2236 2237 /* TRMM */ 2238 2239 /* host or device pointer */ 2240 cublasStatus_t cublasStrmm_v2 ( 2241 cublasHandle_t handle, 2242 cublasSideMode_t side, 2243 cublasFillMode_t uplo, 2244 cublasOperation_t trans, 2245 cublasDiagType_t diag, 2246 int m, 2247 int n, 2248 const(float)* alpha, 2249 const(float)* A, 2250 int lda, 2251 const(float)* B, 2252 int ldb, 2253 float* C, 2254 int ldc); 2255 2256 /* host or device pointer */ 2257 cublasStatus_t cublasDtrmm_v2 ( 2258 cublasHandle_t handle, 2259 cublasSideMode_t side, 2260 cublasFillMode_t uplo, 2261 cublasOperation_t trans, 2262 cublasDiagType_t diag, 2263 int m, 2264 int n, 2265 const(double)* alpha, 2266 const(double)* A, 2267 int lda, 2268 const(double)* B, 2269 int ldb, 2270 double* C, 2271 int ldc); 2272 2273 /* host or device pointer */ 2274 cublasStatus_t cublasCtrmm_v2 ( 2275 cublasHandle_t handle, 2276 cublasSideMode_t side, 2277 cublasFillMode_t uplo, 2278 cublasOperation_t trans, 2279 cublasDiagType_t diag, 2280 int m, 2281 int n, 2282 const(cuComplex)* alpha, 2283 const(cuComplex)* A, 2284 int lda, 2285 const(cuComplex)* B, 2286 int ldb, 2287 cuComplex* C, 2288 int ldc); 2289 2290 /* host or device pointer */ 2291 cublasStatus_t cublasZtrmm_v2 ( 2292 cublasHandle_t handle, 2293 cublasSideMode_t side, 2294 cublasFillMode_t uplo, 2295 cublasOperation_t trans, 2296 cublasDiagType_t diag, 2297 int m, 2298 int n, 2299 const(cuDoubleComplex)* alpha, 2300 const(cuDoubleComplex)* A, 2301 int lda, 2302 const(cuDoubleComplex)* B, 2303 int ldb, 2304 cuDoubleComplex* C, 2305 int ldc); 2306 2307 /* BATCH GEMM */ 2308 2309 /* host or device pointer */ 2310 2311 /* host or device pointer */ 2312 cublasStatus_t cublasSgemmBatched ( 2313 cublasHandle_t handle, 2314 cublasOperation_t transa, 2315 cublasOperation_t transb, 2316 int m, 2317 int n, 2318 int k, 2319 const(float)* alpha, 2320 const(float)** Aarray, 2321 int lda, 2322 const(float)** Barray, 2323 int ldb, 2324 const(float)* beta, 2325 float** Carray, 2326 int ldc, 2327 int batchCount); 2328 2329 /* host or device pointer */ 2330 2331 /* host or device pointer */ 2332 cublasStatus_t cublasDgemmBatched ( 2333 cublasHandle_t handle, 2334 cublasOperation_t transa, 2335 cublasOperation_t transb, 2336 int m, 2337 int n, 2338 int k, 2339 const(double)* alpha, 2340 const(double)** Aarray, 2341 int lda, 2342 const(double)** Barray, 2343 int ldb, 2344 const(double)* beta, 2345 double** Carray, 2346 int ldc, 2347 int batchCount); 2348 2349 /* host or device pointer */ 2350 2351 /* host or device pointer */ 2352 cublasStatus_t cublasCgemmBatched ( 2353 cublasHandle_t handle, 2354 cublasOperation_t transa, 2355 cublasOperation_t transb, 2356 int m, 2357 int n, 2358 int k, 2359 const(cuComplex)* alpha, 2360 const(cuComplex)** Aarray, 2361 int lda, 2362 const(cuComplex)** Barray, 2363 int ldb, 2364 const(cuComplex)* beta, 2365 cuComplex** Carray, 2366 int ldc, 2367 int batchCount); 2368 2369 /* host or device pointer */ 2370 2371 /* host or device pointer */ 2372 cublasStatus_t cublasZgemmBatched ( 2373 cublasHandle_t handle, 2374 cublasOperation_t transa, 2375 cublasOperation_t transb, 2376 int m, 2377 int n, 2378 int k, 2379 const(cuDoubleComplex)* alpha, 2380 const(cuDoubleComplex)** Aarray, 2381 int lda, 2382 const(cuDoubleComplex)** Barray, 2383 int ldb, 2384 const(cuDoubleComplex)* beta, 2385 cuDoubleComplex** Carray, 2386 int ldc, 2387 int batchCount); 2388 2389 /* ---------------- CUBLAS BLAS-like extension ---------------- */ 2390 /* GEAM */ 2391 2392 /* host or device pointer */ 2393 2394 /* host or device pointer */ 2395 cublasStatus_t cublasSgeam ( 2396 cublasHandle_t handle, 2397 cublasOperation_t transa, 2398 cublasOperation_t transb, 2399 int m, 2400 int n, 2401 const(float)* alpha, 2402 const(float)* A, 2403 int lda, 2404 const(float)* beta, 2405 const(float)* B, 2406 int ldb, 2407 float* C, 2408 int ldc); 2409 2410 /* host or device pointer */ 2411 2412 /* host or device pointer */ 2413 cublasStatus_t cublasDgeam ( 2414 cublasHandle_t handle, 2415 cublasOperation_t transa, 2416 cublasOperation_t transb, 2417 int m, 2418 int n, 2419 const(double)* alpha, 2420 const(double)* A, 2421 int lda, 2422 const(double)* beta, 2423 const(double)* B, 2424 int ldb, 2425 double* C, 2426 int ldc); 2427 2428 /* host or device pointer */ 2429 2430 /* host or device pointer */ 2431 cublasStatus_t cublasCgeam ( 2432 cublasHandle_t handle, 2433 cublasOperation_t transa, 2434 cublasOperation_t transb, 2435 int m, 2436 int n, 2437 const(cuComplex)* alpha, 2438 const(cuComplex)* A, 2439 int lda, 2440 const(cuComplex)* beta, 2441 const(cuComplex)* B, 2442 int ldb, 2443 cuComplex* C, 2444 int ldc); 2445 2446 /* host or device pointer */ 2447 2448 /* host or device pointer */ 2449 cublasStatus_t cublasZgeam ( 2450 cublasHandle_t handle, 2451 cublasOperation_t transa, 2452 cublasOperation_t transb, 2453 int m, 2454 int n, 2455 const(cuDoubleComplex)* alpha, 2456 const(cuDoubleComplex)* A, 2457 int lda, 2458 const(cuDoubleComplex)* beta, 2459 const(cuDoubleComplex)* B, 2460 int ldb, 2461 cuDoubleComplex* C, 2462 int ldc); 2463 2464 /* Batched LU - GETRF*/ 2465 2466 /*Device pointer*/ 2467 2468 /*Device Pointer*/ 2469 /*Device Pointer*/ 2470 cublasStatus_t cublasSgetrfBatched ( 2471 cublasHandle_t handle, 2472 int n, 2473 float** A, 2474 int lda, 2475 int* P, 2476 int* info, 2477 int batchSize); 2478 2479 /*Device pointer*/ 2480 2481 /*Device Pointer*/ 2482 /*Device Pointer*/ 2483 cublasStatus_t cublasDgetrfBatched ( 2484 cublasHandle_t handle, 2485 int n, 2486 double** A, 2487 int lda, 2488 int* P, 2489 int* info, 2490 int batchSize); 2491 2492 /*Device pointer*/ 2493 2494 /*Device Pointer*/ 2495 /*Device Pointer*/ 2496 cublasStatus_t cublasCgetrfBatched ( 2497 cublasHandle_t handle, 2498 int n, 2499 cuComplex** A, 2500 int lda, 2501 int* P, 2502 int* info, 2503 int batchSize); 2504 2505 /*Device pointer*/ 2506 2507 /*Device Pointer*/ 2508 /*Device Pointer*/ 2509 cublasStatus_t cublasZgetrfBatched ( 2510 cublasHandle_t handle, 2511 int n, 2512 cuDoubleComplex** A, 2513 int lda, 2514 int* P, 2515 int* info, 2516 int batchSize); 2517 2518 /* Batched inversion based on LU factorization from getrf */ 2519 2520 /*Device pointer*/ 2521 2522 /*Device pointer*/ 2523 /*Device pointer*/ 2524 cublasStatus_t cublasSgetriBatched ( 2525 cublasHandle_t handle, 2526 int n, 2527 const(float)** A, 2528 int lda, 2529 const(int)* P, 2530 float** C, 2531 int ldc, 2532 int* info, 2533 int batchSize); 2534 2535 /*Device pointer*/ 2536 2537 /*Device pointer*/ 2538 /*Device pointer*/ 2539 cublasStatus_t cublasDgetriBatched ( 2540 cublasHandle_t handle, 2541 int n, 2542 const(double)** A, 2543 int lda, 2544 const(int)* P, 2545 double** C, 2546 int ldc, 2547 int* info, 2548 int batchSize); 2549 2550 /*Device pointer*/ 2551 2552 /*Device pointer*/ 2553 /*Device pointer*/ 2554 cublasStatus_t cublasCgetriBatched ( 2555 cublasHandle_t handle, 2556 int n, 2557 const(cuComplex)** A, 2558 int lda, 2559 const(int)* P, 2560 cuComplex** C, 2561 int ldc, 2562 int* info, 2563 int batchSize); 2564 2565 /*Device pointer*/ 2566 2567 /*Device pointer*/ 2568 /*Device pointer*/ 2569 cublasStatus_t cublasZgetriBatched ( 2570 cublasHandle_t handle, 2571 int n, 2572 const(cuDoubleComplex)** A, 2573 int lda, 2574 const(int)* P, 2575 cuDoubleComplex** C, 2576 int ldc, 2577 int* info, 2578 int batchSize); 2579 2580 /* Batched solver based on LU factorization from getrf */ 2581 2582 cublasStatus_t cublasSgetrsBatched ( 2583 cublasHandle_t handle, 2584 cublasOperation_t trans, 2585 int n, 2586 int nrhs, 2587 const(float)** Aarray, 2588 int lda, 2589 const(int)* devIpiv, 2590 float** Barray, 2591 int ldb, 2592 int* info, 2593 int batchSize); 2594 2595 cublasStatus_t cublasDgetrsBatched ( 2596 cublasHandle_t handle, 2597 cublasOperation_t trans, 2598 int n, 2599 int nrhs, 2600 const(double)** Aarray, 2601 int lda, 2602 const(int)* devIpiv, 2603 double** Barray, 2604 int ldb, 2605 int* info, 2606 int batchSize); 2607 2608 cublasStatus_t cublasCgetrsBatched ( 2609 cublasHandle_t handle, 2610 cublasOperation_t trans, 2611 int n, 2612 int nrhs, 2613 const(cuComplex)** Aarray, 2614 int lda, 2615 const(int)* devIpiv, 2616 cuComplex** Barray, 2617 int ldb, 2618 int* info, 2619 int batchSize); 2620 2621 cublasStatus_t cublasZgetrsBatched ( 2622 cublasHandle_t handle, 2623 cublasOperation_t trans, 2624 int n, 2625 int nrhs, 2626 const(cuDoubleComplex)** Aarray, 2627 int lda, 2628 const(int)* devIpiv, 2629 cuDoubleComplex** Barray, 2630 int ldb, 2631 int* info, 2632 int batchSize); 2633 2634 /* TRSM - Batched Triangular Solver */ 2635 2636 /*Host or Device Pointer*/ 2637 cublasStatus_t cublasStrsmBatched ( 2638 cublasHandle_t handle, 2639 cublasSideMode_t side, 2640 cublasFillMode_t uplo, 2641 cublasOperation_t trans, 2642 cublasDiagType_t diag, 2643 int m, 2644 int n, 2645 const(float)* alpha, 2646 const(float)** A, 2647 int lda, 2648 float** B, 2649 int ldb, 2650 int batchCount); 2651 2652 /*Host or Device Pointer*/ 2653 cublasStatus_t cublasDtrsmBatched ( 2654 cublasHandle_t handle, 2655 cublasSideMode_t side, 2656 cublasFillMode_t uplo, 2657 cublasOperation_t trans, 2658 cublasDiagType_t diag, 2659 int m, 2660 int n, 2661 const(double)* alpha, 2662 const(double)** A, 2663 int lda, 2664 double** B, 2665 int ldb, 2666 int batchCount); 2667 2668 /*Host or Device Pointer*/ 2669 cublasStatus_t cublasCtrsmBatched ( 2670 cublasHandle_t handle, 2671 cublasSideMode_t side, 2672 cublasFillMode_t uplo, 2673 cublasOperation_t trans, 2674 cublasDiagType_t diag, 2675 int m, 2676 int n, 2677 const(cuComplex)* alpha, 2678 const(cuComplex)** A, 2679 int lda, 2680 cuComplex** B, 2681 int ldb, 2682 int batchCount); 2683 2684 /*Host or Device Pointer*/ 2685 cublasStatus_t cublasZtrsmBatched ( 2686 cublasHandle_t handle, 2687 cublasSideMode_t side, 2688 cublasFillMode_t uplo, 2689 cublasOperation_t trans, 2690 cublasDiagType_t diag, 2691 int m, 2692 int n, 2693 const(cuDoubleComplex)* alpha, 2694 const(cuDoubleComplex)** A, 2695 int lda, 2696 cuDoubleComplex** B, 2697 int ldb, 2698 int batchCount); 2699 2700 /* Batched - MATINV*/ 2701 2702 /*Device pointer*/ 2703 2704 /*Device pointer*/ 2705 2706 /*Device Pointer*/ 2707 cublasStatus_t cublasSmatinvBatched ( 2708 cublasHandle_t handle, 2709 int n, 2710 const(float)** A, 2711 int lda, 2712 float** Ainv, 2713 int lda_inv, 2714 int* info, 2715 int batchSize); 2716 2717 /*Device pointer*/ 2718 2719 /*Device pointer*/ 2720 2721 /*Device Pointer*/ 2722 cublasStatus_t cublasDmatinvBatched ( 2723 cublasHandle_t handle, 2724 int n, 2725 const(double)** A, 2726 int lda, 2727 double** Ainv, 2728 int lda_inv, 2729 int* info, 2730 int batchSize); 2731 2732 /*Device pointer*/ 2733 2734 /*Device pointer*/ 2735 2736 /*Device Pointer*/ 2737 cublasStatus_t cublasCmatinvBatched ( 2738 cublasHandle_t handle, 2739 int n, 2740 const(cuComplex)** A, 2741 int lda, 2742 cuComplex** Ainv, 2743 int lda_inv, 2744 int* info, 2745 int batchSize); 2746 2747 /*Device pointer*/ 2748 2749 /*Device pointer*/ 2750 2751 /*Device Pointer*/ 2752 cublasStatus_t cublasZmatinvBatched ( 2753 cublasHandle_t handle, 2754 int n, 2755 const(cuDoubleComplex)** A, 2756 int lda, 2757 cuDoubleComplex** Ainv, 2758 int lda_inv, 2759 int* info, 2760 int batchSize); 2761 2762 /* Batch QR Factorization */ 2763 2764 /*Device pointer*/ 2765 2766 /* Device pointer*/ 2767 cublasStatus_t cublasSgeqrfBatched ( 2768 cublasHandle_t handle, 2769 int m, 2770 int n, 2771 float** Aarray, 2772 int lda, 2773 float** TauArray, 2774 int* info, 2775 int batchSize); 2776 2777 /*Device pointer*/ 2778 2779 /* Device pointer*/ 2780 cublasStatus_t cublasDgeqrfBatched ( 2781 cublasHandle_t handle, 2782 int m, 2783 int n, 2784 double** Aarray, 2785 int lda, 2786 double** TauArray, 2787 int* info, 2788 int batchSize); 2789 2790 /*Device pointer*/ 2791 2792 /* Device pointer*/ 2793 cublasStatus_t cublasCgeqrfBatched ( 2794 cublasHandle_t handle, 2795 int m, 2796 int n, 2797 cuComplex** Aarray, 2798 int lda, 2799 cuComplex** TauArray, 2800 int* info, 2801 int batchSize); 2802 2803 /*Device pointer*/ 2804 2805 /* Device pointer*/ 2806 cublasStatus_t cublasZgeqrfBatched ( 2807 cublasHandle_t handle, 2808 int m, 2809 int n, 2810 cuDoubleComplex** Aarray, 2811 int lda, 2812 cuDoubleComplex** TauArray, 2813 int* info, 2814 int batchSize); 2815 2816 /* Least Square Min only m >= n and Non-transpose supported */ 2817 2818 /*Device pointer*/ 2819 2820 /* Device pointer*/ 2821 2822 /* Device pointer*/ 2823 cublasStatus_t cublasSgelsBatched ( 2824 cublasHandle_t handle, 2825 cublasOperation_t trans, 2826 int m, 2827 int n, 2828 int nrhs, 2829 float** Aarray, 2830 int lda, 2831 float** Carray, 2832 int ldc, 2833 int* info, 2834 int* devInfoArray, 2835 int batchSize); 2836 2837 /*Device pointer*/ 2838 2839 /* Device pointer*/ 2840 2841 /* Device pointer*/ 2842 cublasStatus_t cublasDgelsBatched ( 2843 cublasHandle_t handle, 2844 cublasOperation_t trans, 2845 int m, 2846 int n, 2847 int nrhs, 2848 double** Aarray, 2849 int lda, 2850 double** Carray, 2851 int ldc, 2852 int* info, 2853 int* devInfoArray, 2854 int batchSize); 2855 2856 /*Device pointer*/ 2857 2858 /* Device pointer*/ 2859 cublasStatus_t cublasCgelsBatched ( 2860 cublasHandle_t handle, 2861 cublasOperation_t trans, 2862 int m, 2863 int n, 2864 int nrhs, 2865 cuComplex** Aarray, 2866 int lda, 2867 cuComplex** Carray, 2868 int ldc, 2869 int* info, 2870 int* devInfoArray, 2871 int batchSize); 2872 2873 /*Device pointer*/ 2874 2875 /* Device pointer*/ 2876 cublasStatus_t cublasZgelsBatched ( 2877 cublasHandle_t handle, 2878 cublasOperation_t trans, 2879 int m, 2880 int n, 2881 int nrhs, 2882 cuDoubleComplex** Aarray, 2883 int lda, 2884 cuDoubleComplex** Carray, 2885 int ldc, 2886 int* info, 2887 int* devInfoArray, 2888 int batchSize); 2889 2890 /* DGMM */ 2891 cublasStatus_t cublasSdgmm ( 2892 cublasHandle_t handle, 2893 cublasSideMode_t mode, 2894 int m, 2895 int n, 2896 const(float)* A, 2897 int lda, 2898 const(float)* x, 2899 int incx, 2900 float* C, 2901 int ldc); 2902 2903 cublasStatus_t cublasDdgmm ( 2904 cublasHandle_t handle, 2905 cublasSideMode_t mode, 2906 int m, 2907 int n, 2908 const(double)* A, 2909 int lda, 2910 const(double)* x, 2911 int incx, 2912 double* C, 2913 int ldc); 2914 2915 cublasStatus_t cublasCdgmm ( 2916 cublasHandle_t handle, 2917 cublasSideMode_t mode, 2918 int m, 2919 int n, 2920 const(cuComplex)* A, 2921 int lda, 2922 const(cuComplex)* x, 2923 int incx, 2924 cuComplex* C, 2925 int ldc); 2926 2927 cublasStatus_t cublasZdgmm ( 2928 cublasHandle_t handle, 2929 cublasSideMode_t mode, 2930 int m, 2931 int n, 2932 const(cuDoubleComplex)* A, 2933 int lda, 2934 const(cuDoubleComplex)* x, 2935 int incx, 2936 cuDoubleComplex* C, 2937 int ldc); 2938 2939 /* TPTTR : Triangular Pack format to Triangular format */ 2940 cublasStatus_t cublasStpttr ( 2941 cublasHandle_t handle, 2942 cublasFillMode_t uplo, 2943 int n, 2944 const(float)* AP, 2945 float* A, 2946 int lda); 2947 2948 cublasStatus_t cublasDtpttr ( 2949 cublasHandle_t handle, 2950 cublasFillMode_t uplo, 2951 int n, 2952 const(double)* AP, 2953 double* A, 2954 int lda); 2955 2956 cublasStatus_t cublasCtpttr ( 2957 cublasHandle_t handle, 2958 cublasFillMode_t uplo, 2959 int n, 2960 const(cuComplex)* AP, 2961 cuComplex* A, 2962 int lda); 2963 2964 cublasStatus_t cublasZtpttr ( 2965 cublasHandle_t handle, 2966 cublasFillMode_t uplo, 2967 int n, 2968 const(cuDoubleComplex)* AP, 2969 cuDoubleComplex* A, 2970 int lda); 2971 2972 /* TRTTP : Triangular format to Triangular Pack format */ 2973 cublasStatus_t cublasStrttp ( 2974 cublasHandle_t handle, 2975 cublasFillMode_t uplo, 2976 int n, 2977 const(float)* A, 2978 int lda, 2979 float* AP); 2980 2981 cublasStatus_t cublasDtrttp ( 2982 cublasHandle_t handle, 2983 cublasFillMode_t uplo, 2984 int n, 2985 const(double)* A, 2986 int lda, 2987 double* AP); 2988 2989 cublasStatus_t cublasCtrttp ( 2990 cublasHandle_t handle, 2991 cublasFillMode_t uplo, 2992 int n, 2993 const(cuComplex)* A, 2994 int lda, 2995 cuComplex* AP); 2996 2997 cublasStatus_t cublasZtrttp ( 2998 cublasHandle_t handle, 2999 cublasFillMode_t uplo, 3000 int n, 3001 const(cuDoubleComplex)* A, 3002 int lda, 3003 cuDoubleComplex* AP);